package cc.rengu.igas.momp.common.dao;

import cc.rengu.igas.momp.common.entity.*;

import java.util.List;

/**
 * 营销活动规则数据库操作接口定义
 *
 * @author Jinan Liu
 * @version 1.0.0
 * @date 2020/3/25 16:11
 */
public interface McRuleInfoMapper {

    /**
     * 代理商营销活动规则查询数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMMcAgentProfitSharingRuleInfo>
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/3/28 18:58
     */
    List<TMMcAgentProfitSharingRuleInfo> selectAgentProfitSharingRuleInfoList(String instId, String mcNo) throws Exception;

    /**
     * 收银员返现类营销活动规则查询数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMMcCashierCashbackRuleInfo>
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/3/28 18:58
     */
    List<TMMcCashierCashbackRuleInfo> selectCashierCashbackRuleInfoList(String instId, String mcNo) throws Exception;

    /**
     * 卡券类营销活动规则查询数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMMcCouponRuleInfo>
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/3/28 18:58
     */
    List<TMMcCouponRuleInfo> selectCouponRuleInfoList(String instId, String mcNo) throws Exception;

    /**
     * 商户手续费优惠营销活动规则查询数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMMcMchntFeeDiscountRuleInfo> 商户手续费减免类营销活动规则信息表
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/3/28 18:58
     */
    List<TMMcMchntFeeDiscountRuleInfo> selectMchntFeeDiscountRuleInfoList(String instId, String mcNo) throws Exception;

    /**
     * 减免类营销活动规则查询数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMMcMoneyOffRuleInfo>
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/3/28 18:59
     */
    List<TMMcMoneyOffRuleInfo> selectMoneyOffRuleInfoList(String instId, String mcNo) throws Exception;

    /**
     * 减免类营销活动规则新增数据库操作接口定义
     *
     * @param mcMoneyOffRuleInfoList 减免类营销活动规则表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/1 22:11
     */
    int insertMoneyOffRuleInfoListByBank(List<TMMcMoneyOffRuleInfo> mcMoneyOffRuleInfoList) throws Exception;

    /**
     * 减免类营销活动规则修改数据库操作接口定义
     *
     * @param mcMoneyOffRuleInfoList
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/1 22:11
     */
    int updateMoneyOffRuleInfoListByBank(List<TMMcMoneyOffRuleInfo> mcMoneyOffRuleInfoList) throws Exception;

    /**
     * 减免类营销活动规则删除数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/1 22:11
     */
    int deleteMoneyOffRuleInfoListByBank(String instId, String mcNo) throws Exception;

    /**
     * 新增单条减免类营销活动规则数据库操作接口定义
     *
     * @param instId             法人机构号
     * @param mcMoneyOffRuleInfo
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/2 00:01
     */
    int insertMoneyOffRuleInfo(String instId, TMMcMoneyOffRuleInfo mcMoneyOffRuleInfo) throws Exception;

    /**
     * 更新单条减免类营销活动规则数据库操作接口定义
     *
     * @param instId             法人机构号
     * @param mcMoneyOffRuleInfo
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/2 00:01
     */
    int updateMoneyOffRuleInfo(String instId, TMMcMoneyOffRuleInfo mcMoneyOffRuleInfo) throws Exception;

    /**
     * 使用主键删除单条减免类营销活动规则数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param ruleIndex
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/2 00:01
     */
    int deleteMoneyOffRuleInfoByPrimaryKey(String instId, String mcNo, String ruleIndex) throws Exception;

    /**
     * 使用主键查询单条减免类营销活动规则数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param ruleIndex
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/2 00:01
     */
    int selectMoneyOffRuleInfoByPrimaryKey(String instId, String mcNo, String ruleIndex) throws Exception;

    /**
     * 代理商营销活动规则新增数据库操作接口定义
     *
     * @param instId                           法人机构号
     * @param mcAgentProfitSharingRuleInfoList
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:49
     */
    int insertAgentProfitSharingRuleInfoListByBank(String instId, List<TMMcAgentProfitSharingRuleInfo> mcAgentProfitSharingRuleInfoList) throws Exception;

    /**
     * 代理商营销活动规则修改数据库操作接口定义
     *
     * @param instId                           法人机构号
     * @param mcAgentProfitSharingRuleInfoList
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:49
     */
    int updateAgentProfitSharingRuleInfoListByBank(String instId, List<TMMcAgentProfitSharingRuleInfo> mcAgentProfitSharingRuleInfoList) throws Exception;

    /**
     * 代理商营销活动规则删除数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int deleteAgentProfitSharingRuleInfoListByBank(String instId, String mcNo) throws Exception;

    /**
     * 新增单条代理商营销活动规则数据库操作接口定义
     *
     * @param instId                           法人机构号
     * @param mcAgentProfitSharingRuleInfoList
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int insertAgentProfitSharingRuleInfo(String instId, TMMcAgentProfitSharingRuleInfo mcAgentProfitSharingRuleInfoList) throws Exception;

    /**
     * 更新单条代理商营销活动规则数据库操作接口定义
     *
     * @param instId                           法人机构号
     * @param mcAgentProfitSharingRuleInfoList
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int updateAgentProfitSharingRuleInfo(String instId, TMMcAgentProfitSharingRuleInfo mcAgentProfitSharingRuleInfoList) throws Exception;

    /**
     * 使用主键删除单条代理商营销活动规则数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param ruleIndex
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int deleteAgentProfitSharingRuleInfoByPrimaryKey(String instId, String mcNo, String ruleIndex) throws Exception;

    /**
     * 使用主键查询单条代理商营销活动规则数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param ruleIndex
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int selectAgentProfitSharingRuleInfoByPrimaryKey(String instId, String mcNo, String ruleIndex) throws Exception;

    /**
     * 收银员返现营销活动规则新增数据库操作接口定义
     *
     * @param mcCashierCashbackRuleInfoList
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:49
     */
    int insertCashierCashbackRuleInfoListByBank(List<TMMcCashierCashbackRuleInfo> mcCashierCashbackRuleInfoList) throws Exception;

    /**
     * 收银员返现营销活动规则修改数据库操作接口定义
     *
     * @param instId                        法人机构号
     * @param mcCashierCashbackRuleInfoList
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:49
     */
    int updateCashierCashbackRuleInfoListByBank(String instId, List<TMMcCashierCashbackRuleInfo> mcCashierCashbackRuleInfoList) throws Exception;

    /**
     * 收银员返现营销活动规则删除数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int deleteCashierCashbackRuleInfoListByMcNo(String instId, String mcNo) throws Exception;

    /**
     * 新增单条收银员返现营销活动规则数据库操作接口定义
     *
     * @param instId                        法人机构号
     * @param mcCashierCashbackRuleInfoList
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int insertCashierCashbackRuleInfo(String instId, TMMcCashierCashbackRuleInfo mcCashierCashbackRuleInfoList) throws Exception;

    /**
     * 更新单条收银员返现营销活动规则数据库操作接口定义
     *
     * @param instId                        法人机构号
     * @param mcCashierCashbackRuleInfoList
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int updateCashierCashbackRuleInfo(String instId, TMMcCashierCashbackRuleInfo mcCashierCashbackRuleInfoList) throws Exception;

    /**
     * 使用主键删除单条收银员返现营销活动规则数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param ruleIndex
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int deleteCashierCashbackRuleInfoByPrimaryKey(String instId, String mcNo, String ruleIndex) throws Exception;

    /**
     * 使用主键查询单条收银员返现营销活动规则数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param ruleIndex
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int selectCashierCashbackRuleInfoByPrimaryKey(String instId, String mcNo, String ruleIndex) throws Exception;

    /**
     * 卡券类营销活动规则新增数据库操作接口定义
     *
     * @param mcCouponRuleInfoList 卡券类营销活动规则信息表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:49
     */
    int insertCouponRuleInfoListByBank(List<TMMcCouponRuleInfo> mcCouponRuleInfoList) throws Exception;

    /**
     * 卡券类营销活动规则修改数据库操作接口定义
     *
     * @param mcCouponRuleInfoList
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:49
     */
    int updateCouponRuleInfoListByBank(List<TMMcCouponRuleInfo> mcCouponRuleInfoList) throws Exception;

    /**
     * 卡券类营销活动规则删除数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int deleteCouponRuleInfoListByBank(String instId, String mcNo) throws Exception;

    /**
     * 新增单条卡券类营销活动规则数据库操作接口定义
     *
     * @param instId               法人机构号
     * @param mcCouponRuleInfoList 卡券类营销活动规则信息表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int insertCouponRuleInfo(String instId, TMMcCouponRuleInfo mcCouponRuleInfoList) throws Exception;

    /**
     * 更新单条卡券类营销活动规则数据库操作接口定义
     *
     * @param instId               法人机构号
     * @param mcCouponRuleInfoList 卡券类营销活动规则信息表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int updateCouponRuleInfo(String instId, TMMcCouponRuleInfo mcCouponRuleInfoList) throws Exception;

    /**
     * 使用主键删除单条卡券类营销活动规则数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param ruleIndex 规则顺序号
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int deleteCouponRuleInfoByPrimaryKey(String instId, String mcNo, String ruleIndex) throws Exception;

    /**
     * 使用主键查询单条卡券类营销活动规则数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param ruleIndex 规则顺序号
     * @return cc.rengu.igas.momp.common.entity.TMMcCouponRuleInfo 卡券类营销活动规则信息表
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    TMMcCouponRuleInfo selectCouponRuleInfoByPrimaryKey(String instId, String mcNo, String ruleIndex) throws Exception;

    /**
     * 商户手续费优惠营销活动规则新增数据库操作接口定义
     *
     * @param mcMchntFeeDiscountRuleInfoList 商户手续费减免类营销活动规则信息表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:49
     */
    int insertMfdRuleInfoListByBank(List<TMMcMchntFeeDiscountRuleInfo> mcMchntFeeDiscountRuleInfoList) throws Exception;

    /**
     * 商户手续费优惠营销活动规则修改数据库操作接口定义
     *
     * @param instId                         法人机构号
     * @param mcMchntFeeDiscountRuleInfoList 商户手续费减免类营销活动规则信息表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:49
     */
    int updateMchntFeeDiscountRuleInfoListByBank(String instId, List<TMMcMchntFeeDiscountRuleInfo> mcMchntFeeDiscountRuleInfoList) throws Exception;

    /**
     * 商户手续费优惠营销活动规则删除数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int deleteMfdRuleInfoListByBank(String instId, String mcNo) throws Exception;

    /**
     * 新增单条商户手续费优惠营销活动规则数据库操作接口定义
     *
     * @param instId                         法人机构号
     * @param mcMchntFeeDiscountRuleInfoList 商户手续费减免类营销活动规则信息表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int insertMchntFeeDiscountRuleInfo(String instId, TMMcMchntFeeDiscountRuleInfo mcMchntFeeDiscountRuleInfoList) throws Exception;

    /**
     * 更新单条商户手续费优惠营销活动规则数据库操作接口定义
     *
     * @param instId                         法人机构号
     * @param mcMchntFeeDiscountRuleInfoList 商户手续费减免类营销活动规则信息表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int updateMchntFeeDiscountRuleInfo(String instId, TMMcMchntFeeDiscountRuleInfo mcMchntFeeDiscountRuleInfoList) throws Exception;

    /**
     * 使用主键删除单条商户手续费优惠营销活动规则数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param ruleIndex 规则顺序号
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    int deleteMchntFeeDiscountRuleInfoByPrimaryKey(String instId, String mcNo, String ruleIndex) throws Exception;

    /**
     * 使用主键查询单条商户手续费优惠营销活动规则数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mcNo      营销活动编号
     * @param ruleIndex 规则顺序号
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/6 22:50
     */
    TMMcMchntFeeDiscountRuleInfo selectMchntFeeDiscountRuleInfoByPrimaryKey(String instId, String mcNo, String ruleIndex) throws Exception;

    /**
     * 合并支付使用-根据营销活动编号和订单金额取符合条件的营销活动规则数据库操作接口定义
     *
     * @param instId   法人机构号
     * @param mcNo     营销活动编号
     * @param criteria 门槛
     * @return cc.rengu.igas.momp.common.entity.TMMcMoneyOffRuleInfo 减免类营销活动规则表
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/21 10:31
     */
    TMMcMoneyOffRuleInfo selectMoneyOffRuleInfoListOrderByCriteria(String instId, String mcNo, String criteria) throws Exception;

    /**
     * 合并支付使用-根据营销活动编号和当前统计值取符合条件的商户手续费优惠营销活动规则数据库操作接口定义
     *
     * @param instId   法人机构号
     * @param mcNo     营销活动编号
     * @param criteria 门槛
     * @return cc.rengu.igas.momp.common.entity.TMMcMchntFeeDiscountRuleInfo 商户手续费减免类营销活动规则信息表
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/21 10:31
     */
    TMMcMchntFeeDiscountRuleInfo selectMchntFeeDiscountRuleInfoListOrderByAmount(String instId, String mcNo, String criteria) throws Exception;

    /**
     * 手续费优惠使用-根据营销活动编号查询营销活动规则数据库操作接口定义
     *
     * @param instId
     * @param mcNo
     * @param mchntDeposit
     * @param criteriaValue
     * @return cc.rengu.igas.momp.common.entity.TMMcMchntFeeDiscountRuleInfo 商户手续费减免类营销活动规则信息表
     * @throws Exception
     * @author liujinan
     * @date 2020/4/29
     */
    public TMMcMchntFeeDiscountRuleInfo selectMchntFeeDiscountRuleInfoByMcNo(String instId, String mcNo, String mchntDeposit, String criteriaValue) throws Exception;

    /**
     * 使用营销活动编号查询卡券总量数据库操作接口实现
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return cc.rengu.igas.momp.common.entity.TMMcCouponRuleInfo 卡券类营销活动规则信息表
     * @throws Exception 异常信息
     * @author liujinan
     * @date 2020/6/20 9:42
     */
    public TMMcCouponRuleInfo selectCouponAmountByMcNo(String instId, String mcNo) throws Exception;

    /**
     * 根据营销活动编号和规则号取符合条件的营销活动规则数据库操作接口定义
     *
     * @param instId
     * @param mcNo
     * @param ruleIndex
     * @return cc.rengu.igas.momp.common.entity.TMMcMoneyOffRuleInfo
     * @throws Exception
     * @author liujinan
     * @date 2021/6/10 17:10
     */
    TMMcMoneyOffRuleInfo selectMoneyOffRuleInfoOrderByMcNoRuleIndex(String instId, String mcNo, String ruleIndex) throws Exception;
}
